/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.opt.listecampagne.services.impl;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;
import fr.generali.accueilclient.opt.listecampagne.om.ICampagneNomListeCamp;
import fr.generali.accueilclient.opt.listecampagne.om.IIntermediaireCampagneListeCamp;
import fr.generali.accueilclient.opt.listecampagne.services.IListeCampagneService;
import fr.generali.relationclient.marketing.opt.listecampagne.DtoCampagneNom;
import fr.generali.relationclient.marketing.opt.listecampagne.services.IListeCampagneWebService;
import fr.generali.relationclient.marketing.opt.listecampagne.services.ListeCampagneWSBusinessException;
import fr.generali.relationclient.marketing.opt.listecampagne.services.ListeCampagneWSTechnicalException;

/**
 * @author Holmes Kelly
 *
 */
@Service("listeCampagneService")
public class ListeCampagneService implements IListeCampagneService {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(ListeCampagneService.class);

    /**
     * Appel mapper contenant les assembler
     */
    @Autowired
    @Qualifier("listeCampagneMapper")
    private ListeCampagneMapper listeCampagneMapper;

    /**
     * Appel web service ListeCampagneWebService
     */
    @Autowired
    @Qualifier("listeCampagneWebService")
    private IListeCampagneWebService listeCampagneWebService;

    /**
     * {@inheritDoc}
     */
    public List<ICampagneNomListeCamp> consulterListeCampagne(IIntermediaireCampagneListeCamp intermediaireCampagne)
        throws AccueilClientBusinessException {

        List<ICampagneNomListeCamp> listeCampagneNom = null;

        if (intermediaireCampagne != null) {

            try {
                final List<DtoCampagneNom> listeDtoCampagneNom =
                                listeCampagneWebService
                                                .consulterListeCampagne(listeCampagneMapper
                                                                .mapperIntermediaireCampagne2DtoIntermediaireCampagne(
                                                                                intermediaireCampagne));

                if (CollectionUtils.isNotEmpty(listeDtoCampagneNom)) {

                    listeCampagneNom =
                                    listeCampagneMapper.mapperListerCampagneNom2ListICampagneNom(listeDtoCampagneNom);
                }

            } catch (ListeCampagneWSBusinessException e) {

                LOGGER.debug(e.getMessage());
                throw new AccueilClientBusinessException(e.getMessage(), e);

            } catch (ListeCampagneWSTechnicalException e) {

                LOGGER.debug(e.getMessage());
            }
        }

        return listeCampagneNom;
    }

}

